package ucla.axelia.reportes;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import ucla.axelia.controlador.interfaces.IServicioAdministracionReporteVoluntariosPorActividad;
import ucla.axelia.modelo.data.Actividad;
import ucla.axelia.modelo.data.TipoActividad;

import nextapp.echo2.app.Column;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;

import com.obelisco.exception.ObeliscoException;
import com.obelisco.vista.componentes.ContenedorReporte;
import com.obelisco.vista.controles.Grid;
import com.obelisco.vista.controles.Label;
import com.obelisco.vista.controles.SelectField;

public class ContenedorReporteVoluntariosPorActividad extends
		ContenedorReporte implements ActionListener {

	private SelectField cmbTipoActividad;
	private SelectField cmbActividad;
	
	private IServicioAdministracionReporteVoluntariosPorActividad servicioAdministracionReporteVoluntariosPorActividad;
	
	private void initComponents(){
		this.removeAll();
		this.setEnabled(true);
		Grid grid = new Grid();
		grid.setStyleName("Obelisco.GridPaneDialogo");
		grid.setSize(2); //Numero de columnas de la tabla
		grid.setColumnWidth(0, new Extent(150, Extent.PX)); //PX denota pixeles
		Label lblTipoActividad = new Label("Tipo de Actividad");
		cmbTipoActividad = new SelectField(160);
		grid.add(lblTipoActividad);
		grid.add(cmbTipoActividad);
		Label lblActividad = new Label("Actividad");
		cmbActividad = new SelectField(160);
		grid.add(lblActividad);
		grid.add(cmbActividad);		
		Column columna = new Column(); // se crea la columna
		columna.add(grid); // se le agrega el grid
		this.add(columna);
		cmbTipoActividad.setActionCommand("0");
		cmbTipoActividad.addActionListener(this);
	}
	
	@Override
	public Map extraerParametros() {
		Map<String, Object> parametros = new HashMap<String, Object>();
		Actividad actividad = (Actividad)cmbActividad.getSelectedItem();
		parametros.put("idActividad", actividad.getIdActividad());
		parametros.put("nombreActividad", actividad.getNombreActividad());
		parametros.put("descripcionActividad", actividad.getDescripcionActividad());
		parametros.put("nombrePrograma", actividad.getPrograma().getNombrePrograma());
		parametros.put("nombreTipoActividad", actividad.getTipoActividad().getNombreTipoActividad());
		return parametros;
	}

	@Override
	public void inicializar() {
		initComponents();
		cmbTipoActividad.inicializarDatos(
				servicioAdministracionReporteVoluntariosPorActividad.buscarTiposDeActividades(),
				"nombreTipoActividad",
				"idTipoActividad");
	}

	@Override
	public List realizarBusqueda() {
		return null;
	}

	public void actionPerformed(ActionEvent arg0) {
		if (arg0.getActionCommand().equals("0")) {
			cmbActividad.inicializarDatos(
					servicioAdministracionReporteVoluntariosPorActividad.buscarActividadesPorTipo((TipoActividad)cmbTipoActividad.getSelectedItem()),
					"nombreActividad",
					"idActividad"); 
		}
	}

	@Override
	public List obtenerLista() {
		return servicioAdministracionReporteVoluntariosPorActividad.obtenerVoluntariosPorActividad(
				(Actividad)cmbActividad.getSelectedItem());
	}

	@Override
	public boolean onValidarDatos() {
		if (cmbActividad.getSelectedItem() == null ||
				cmbActividad.getSelectedItem().equals(cmbActividad.getNombreItemDefecto()))
			throw new ObeliscoException("DEBE SELECCIONAR UNA ACTIVIDAD");
		return true;
	}

	@Override
	public String rutaArchivoReporte() {
		return null;
	}
	

	// Getters y Setters
	
	public IServicioAdministracionReporteVoluntariosPorActividad getServicioAdministracionReporteVoluntariosPorActividad() {
		return servicioAdministracionReporteVoluntariosPorActividad;
	}

	public void setServicioAdministracionReporteVoluntariosPorActividad(
			IServicioAdministracionReporteVoluntariosPorActividad servicioAdministracionReporteVoluntariosPorActividad) {
		this.servicioAdministracionReporteVoluntariosPorActividad = servicioAdministracionReporteVoluntariosPorActividad;
	}

}